﻿using System;

namespace SharpSqlAnalyzer.nodes
{
	// Token: 0x020002A1 RID: 673
	public class TCreateFunctionOption : TParseTreeNode
	{
		// Token: 0x17000433 RID: 1075
		// (get) Token: 0x06001602 RID: 5634 RVA: 0x00326A83 File Offset: 0x00324C83
		// (set) Token: 0x06001603 RID: 5635 RVA: 0x00326A8B File Offset: 0x00324C8B
		public TConstant FunctionBody
		{
			get
			{
				return this._functionBody;
			}
			set
			{
				this._functionBody = value;
			}
		}

		// Token: 0x17000434 RID: 1076
		// (get) Token: 0x06001604 RID: 5636 RVA: 0x00326A94 File Offset: 0x00324C94
		public virtual ECreateFunctionOptionType OptionType
		{
			get
			{
				return this.optionType;
			}
		}

		// Token: 0x17000435 RID: 1077
		// (get) Token: 0x06001605 RID: 5637 RVA: 0x00326A9C File Offset: 0x00324C9C
		// (set) Token: 0x06001606 RID: 5638 RVA: 0x00326AA4 File Offset: 0x00324CA4
		public virtual TConstant Language
		{
			get
			{
				return this.language;
			}
			set
			{
				this.language = value;
			}
		}

		// Token: 0x17000436 RID: 1078
		// (get) Token: 0x06001607 RID: 5639 RVA: 0x00326AAD File Offset: 0x00324CAD
		public virtual TStatementListSqlNode SqlNodes
		{
			get
			{
				return this.sqlNodes;
			}
		}

		// Token: 0x17000437 RID: 1079
		// (get) Token: 0x06001608 RID: 5640 RVA: 0x00326AB5 File Offset: 0x00324CB5
		public virtual TBlockSqlNode BlockSqlNode
		{
			get
			{
				return this.blockSqlNode;
			}
		}

		// Token: 0x17000438 RID: 1080
		// (get) Token: 0x06001609 RID: 5641 RVA: 0x00326ABD File Offset: 0x00324CBD
		public virtual TConstant LinkSymbol
		{
			get
			{
				return this.linkSymbol;
			}
		}

		// Token: 0x17000439 RID: 1081
		// (get) Token: 0x0600160A RID: 5642 RVA: 0x00326AC5 File Offset: 0x00324CC5
		public virtual TConstant Objfile
		{
			get
			{
				return this.objfile;
			}
		}

		// Token: 0x0600160B RID: 5643 RVA: 0x00326ACD File Offset: 0x00324CCD
		public override void init(object arg1, object arg2, object arg3)
		{
			this.optionType = (ECreateFunctionOptionType)arg1;
			if (this.optionType == ECreateFunctionOptionType.objfile)
			{
				this.objfile = (TConstant)arg2;
				this.linkSymbol = (TConstant)arg3;
			}
		}

		// Token: 0x0600160C RID: 5644 RVA: 0x00326AFC File Offset: 0x00324CFC
		public override void init(object arg1, object arg2)
		{
			this.optionType = (ECreateFunctionOptionType)arg1;
			switch (this.optionType)
			{
			case ECreateFunctionOptionType.stmts:
				this.FunctionBody = (TConstant)arg2;
				return;
			case ECreateFunctionOptionType.block:
				this.FunctionBody = (TConstant)arg2;
				return;
			case ECreateFunctionOptionType.language:
				this.Language = (TConstant)arg2;
				return;
			default:
				return;
			}
		}

		// Token: 0x0600160D RID: 5645 RVA: 0x00326B5C File Offset: 0x00324D5C
		public override void init(object arg1)
		{
			if (arg1 is TBlockSqlNode)
			{
				this.blockSqlNode = (TBlockSqlNode)arg1;
				this.optionType = ECreateFunctionOptionType.block;
				return;
			}
			if (arg1 is TStatementListSqlNode)
			{
				this.sqlNodes = (TStatementListSqlNode)arg1;
				this.optionType = ECreateFunctionOptionType.stmts;
				return;
			}
			if (arg1 is TConstant)
			{
				this.language = (TConstant)arg1;
				this.optionType = ECreateFunctionOptionType.language;
				return;
			}
			if (arg1 is TSourceToken)
			{
				this.optionType = ECreateFunctionOptionType.window;
				return;
			}
			if (arg1 is TDummy)
			{
				this.optionType = ECreateFunctionOptionType.common;
				return;
			}
			if (arg1 is ECreateFunctionOptionType)
			{
				this.optionType = (ECreateFunctionOptionType)arg1;
			}
		}

		// Token: 0x04001764 RID: 5988
		private TConstant _functionBody;

		// Token: 0x04001765 RID: 5989
		private ECreateFunctionOptionType optionType;

		// Token: 0x04001766 RID: 5990
		private TStatementListSqlNode sqlNodes;

		// Token: 0x04001767 RID: 5991
		private TConstant language;

		// Token: 0x04001768 RID: 5992
		private TBlockSqlNode blockSqlNode;

		// Token: 0x04001769 RID: 5993
		private TConstant objfile;

		// Token: 0x0400176A RID: 5994
		private TConstant linkSymbol;
	}
}
